{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Defining a 3D object with vectors"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Say if we want to define an octahedron."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "![image.png](images/15.octahedron1.png)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "![image.png](images/16.octahedron2.png)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "![image.png](images/17.octahedronVisibleFace.png)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Imagine \n",
    "\n",
    "If we got two points, one is on the left called A, one is on the right called B.\n",
    "\n",
    "How can you move the A to B?\n",
    "\n",
    "Well, you just do this: A + (B - A)\n",
    "\n",
    "So you do the same thing with vectors."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Projecting to 2D"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "![image.png](images/18.projectingTo2D1.png)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "![image.png](images/19.projectingTo2D2.png)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Just imagine, how can we get a 2D graph from our perspective while the object is 3D.\n",
    "\n",
    "We are facing a 2D plane, which is the screen. The object is 3D.\n",
    "\n",
    "So we need to project the 3D object to a 2D screen plane."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**project**: similar to projector, but a conception"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## yingshaoxo: How do you understand it?"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "> Probably you don't have to understand it. Because I can't understand it either."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Orienting faces and shading"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "To shade our 2D drawing, we pick a fixed color for each triangle according to how much it faces a given light source. \n",
    "\n",
    "Let’s say our light source lies at a vector of (1, 2, 3) from the origin. Then the brightness of a triangular face is decided by how close to perpendicular it is to the light. Another way to measure this is by how aligned a perpendicular vector to the face is with the light source."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Given a vector perpendicular (or normal) to each face and a vector pointing to the light source, their dot product tells us how aligned they are. Moreover, because we’re only considering directions, we can choose vectors with length 1. Then, if the face is pointing toward the light source at all, the dot product will lie between 0 and 1. If it is further than 90° from the light source, it will not be illuminated at all."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## yingshaoxo: let's wait for a second and consider this carefully"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "1. In 3D space, we got vector `u` and `v`, `u x v` is a perpendicular to `u` and `v`. If we are in a direction represented by vector `c`, if $c \\cdot (u \\times v) == 0$, we can't see anything come from `v` and `u`."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "![image.png](images/12.useCrossProductToIndicateVisibility.png)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "2. `Dot product` is a measure of how aligned two vectors is. If the result is a positive value, they are in a similar direction. If the result is a negative value, they are in the opposite direction to each other. If the value == 0, they are perpendicular."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Exercise 3.27\n",
    "    \n",
    "Find pairs of vectors defining each of the 12 edges of the octahedron and draw all of the edges in Python."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "from draw3d import *"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [],
   "source": [
    "from itertools import permutations\n",
    "\n",
    "top = (0,0,1)\n",
    "bottom = (0,0,-1)\n",
    "xy_plane = [(1,0,0), (0,1,0), (-1,0,0), (0,-1,0)]\n",
    "\n",
    "r = []\n",
    "for x in xy_plane:\n",
    "    r.append(Segment3D(top, x))\n",
    "for x in xy_plane:\n",
    "    r.append(Segment3D(bottom, x))\n",
    "r = r + [Segment3D(*i) for i in list(permutations(xy_plane, 2))]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "draw3d(*r)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.9.0"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
